`timescale 1ns / 1ps

/////////////////////////////////////////////////////////////////////////////
////                                                                     ////
//// Instituto Tecnologico de Costa Rica                                 ////
////                                                                     ////
//// Parametros de Tiempo                                                ////
////                                                                     ////
//// Este archivo es parte del proyecto: Control de luces de semaforo    ////
//// http://repositorio-charmander.googlecode.com/svn/trunk/             ////
////                                                                     ////
//// Descripcion                                                         ////
//// Implementacion de un control de luces de semaforo como un proyecto  ////
//// del curso de Taller de Diseo Logico.                                ////
////                                                                     ////
//// Funcionamiento:                                                     ////
//// - Modulo de test bench de Time Parameters                           ////
////                                                                     ////                                    
//// Autores:                                                            ////
//// - Gia Chen, kathya0812@gmail.com                                    ////
////   Edgar Rojas, edtec217@gmail.com                                   ////
////                                                                     ////
/////////////////////////////////////////////////////////////////////////////

module Time_Parameters_tb;

	// Inputs
	reg _clk_i;
	reg _sync_rst_i;
	reg [3:0] Time_Value_i;
	reg [1:0] Time_Parameter_Selector_i;
	reg prog_sync_i;
	reg [1:0] interval_i;

	// Outputs
	wire [3:0] value_o;

	// Instantiate the Unit Under Test (UUT)
	Time_Parameters uut (
		._clk_i(_clk_i), 
		._sync_rst_i(_sync_rst_i), 
		.Time_Value_i(Time_Value_i), 
		.Time_Parameter_Selector_i(Time_Parameter_Selector_i), 
		.prog_sync_i(prog_sync_i), 
		.interval_i(interval_i), 
		.value_o(value_o)
	);

	//Instanciacion del clock
	initial 
		begin
			_clk_i = 0;
			forever begin
			_clk_i = ~_clk_i;
			#50;
			end
		end
		
	initial begin
		// Initialize Inputs
		_clk_i = 0;
		_sync_rst_i = 0;
		Time_Value_i = 0;
		Time_Parameter_Selector_i = 0;
		prog_sync_i = 0;
		interval_i = 0;

		// Wait 100 ns for global reset to finish
		#40;
        
		// Add stimulus here
		interval_i = 2;
		#150;
		interval_i = 1;
		#150;
		interval_i = 2;
		#150;
		interval_i = 0;
		#150;
		Time_Value_i = 14;
		Time_Parameter_Selector_i = 0;
		prog_sync_i = 1;
		#60;
		interval_i = 2;
		#30;
		interval_i = 0;
		#20;
		interval_i = 1;
		#10;
		interval_i = 0;
	end
      
endmodule
